home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 42 / Amiga Format AFCD42 (Issue 126, Aug 1999).iso / -serious- / programming / other / jikes / src / javaprs.h < prev    next >
C/C++ Source or Header  |  1999-05-14  |  3KB  |  86 lines

  1. // $Id: javaprs.h,v 1.7 1999/03/08 18:04:50 shields Exp $
  2. //
  3. // This software is subject to the terms of the IBM Jikes Compiler
  4. // License Agreement available at the following URL:
  5. // http://www.ibm.com/research/jikes.
  6. // Copyright (C) 1996, 1999, International Business Machines Corporation
  7. // and others.  All Rights Reserved.
  8. // You must accept the terms of that agreement to use this software.
  9. //
  10. #ifndef javaprs_INCLUDED
  11. #define javaprs_INCLUDED
  12.  
  13. #define SCOPE_REPAIR
  14. #define DEFERRED_RECOVERY
  15. #define FULL_DIAGNOSIS
  16. #define SPACE_TABLES
  17.  
  18. class LexStream;
  19.  
  20. class javaprs_table
  21. {
  22. public:
  23.     static int original_state(int state) { return -base_check[state]; }
  24.     static int asi(int state) { return asb[original_state(state)]; }
  25.     static int nasi(int state) { return nasb[original_state(state)]; }
  26.     static int in_symbol(int state) { return in_symb[original_state(state)]; }
  27.  
  28.     static const unsigned char  rhs[];
  29.     static const   signed short check_table[];
  30.     static const   signed short *base_check;
  31.     static const unsigned short lhs[];
  32.     static const unsigned short *base_action;
  33.     static const unsigned char  term_check[];
  34.     static const unsigned short term_action[];
  35.  
  36.     static const unsigned short asb[];
  37.     static const unsigned char  asr[];
  38.     static const unsigned short nasb[];
  39.     static const unsigned short nasr[];
  40.     static const unsigned short name_start[];
  41.     static const unsigned char  name_length[];
  42.     static const          char  string_buffer[];
  43.     static const unsigned short terminal_index[];
  44.     static const unsigned short non_terminal_index[];
  45.     static const unsigned short scope_prefix[];
  46.     static const unsigned short scope_suffix[];
  47.     static const unsigned short scope_lhs[];
  48.     static const unsigned char  scope_la[];
  49.     static const unsigned char  scope_state_set[];
  50.     static const unsigned short scope_rhs[];
  51.     static const unsigned short scope_state[];
  52.     static const unsigned short in_symb[];
  53.  
  54.     static int nt_action(int state, int sym)
  55.     {
  56.         return base_action[state + sym];
  57.     }
  58.  
  59.     static int t_action(int act, int sym, LexStream *stream)
  60.     {
  61.         act = base_action[act];
  62.         int i = act + sym;
  63.  
  64.         act = term_action[term_check[i] == sym ? i : act];
  65.  
  66.         if (act > LA_STATE_OFFSET)
  67.         {
  68.             for (TokenObject tok = stream -> Peek();
  69.                  ;
  70.                  tok = stream -> Next(tok))
  71.             {
  72.                act -= LA_STATE_OFFSET;
  73.                sym = stream -> Kind(tok);
  74.                i = act + sym;
  75.                act = term_action[term_check[i] == sym ? i : act];
  76.                if (act <= LA_STATE_OFFSET)
  77.                    break;
  78.             } 
  79.         }
  80.  
  81.         return act;
  82.     }
  83. };
  84.  
  85. #endif /* javaprs_INCLUDED */
  86.